[2025-07-08] File Vulnerability

๐Ÿฆฅ ๋ณธ๋ฌธ

์ •์˜

ํŒŒ์ผ์„ ์—…๋กœ๋“œ, ๋‹ค์šด๋กœ๋“œ, ์ฝ๊ธฐ, ์‚ญ์ œ, ๊ฒฝ๋กœ ์ ‘๊ทผ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ .

์ข…๋ฅ˜

  • File Upload Vulnerablility : ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ .
  • File Download Vulnerablilty : ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ .

File Upload Vulnerability

์ •์˜

ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ . ์ด์šฉ์ž๊ฐ€ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ž„์˜๋กœ ์ •ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๋ฐœ์ƒ. ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋‚˜ WebShell์„ ์—…๋กœ๋“œํ•˜์—ฌ ์›๊ฒฉ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐœ์ƒํ•œ๋‹ค.

์›น ์‰˜

๊ณต๊ฒฉ์ž๊ฐ€ ์›น ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์›๊ฒฉ ๋ช…๋ น ์‹คํ–‰ ๋„๊ตฌ. ์›น์„ ํ†ตํ•ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‰˜(ํ„ฐ๋ฏธ๋„) ํ˜•ํƒœ์˜ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ.

  • CGI : ์›น ์„œ๋ฒ„์™€ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ. ์›น ์„œ๋ฒ„๋Š” HTML ๊ฐ™์€ ์ •์ ์ธ ํŒŒ์ผ๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ CGI๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฒฐ๊ณผ๋„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์›น ์„œ๋ฒ„๋Š” CGI๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ๋™์ž‘ ํ๋ฆ„
      1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญ

         cgi-bin/script.py?name=yunseo
        
      2. ์›น ์„œ๋ฒ„๊ฐ€ CGI ํ”„๋กœ๊ทธ๋žจ(script.py)์„ ์‹คํ–‰
      3. ์š”์ฒญ ๋ฐ์ดํ„ฐ(name=yunseo)๋ฅผ CGI ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌ
      4. CGI ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ ํ›„ HTML ํ˜•์‹์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ
      5. ์›น ์„œ๋ฒ„๊ฐ€ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต

์ข…๋ฅ˜

  • Path Traversal : ์ž„์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ ‘๊ทผํ•˜์—ฌ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ .
    • EX) ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” app.py์™€ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜์—ฌ app.py๋ฅผ ๋ฎ์–ด ์”Œ์šด๋‹ค. ์„œ๋ฒ„๊ฐ€ ์žฌ์‹คํ–‰๋ ๋•Œ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์•…์„ฑ ํŒŒ์ผ ์—…๋กœ๋“œ : ํŒŒ์ผ์„ ์ œ๋Œ€๋กœ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ .
    • EX) ํ”„๋กœํ•„ ์‚ฌ์ง„ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽ˜์ด์ง€์— ์„œ๋ฒ„๋Š” ํ™•์žฅ์ž๋ฅผ .jpg .png๋“ฑ์œผ๋กœ ํ•„ํ„ฐ๋ง์„ ํ•˜๋Š” ๊ฒฝ์šฐ์— shell.php.jpg ์ฒ˜๋Ÿผ ํ™•์žฅ์ž๋งŒ ์œ„์žฅํ•œ Webshell ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ  ํ•ด๋‹น ํŒŒ์ผ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ๋˜๋Š” html ํŒŒ์ผ์— ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด XSS ๊ณต๊ฒฉ์œผ๋กœ๋„ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

๋Œ€์‘ ๋ฐฉ๋ฒ•

  • ํŒŒ์ผ ํ™•์žฅ์ž๋‚˜ MIME ํƒ€์ž…์„ ๋ชจ๋‘ ์„œ๋ฒ„ ์ธก์—์„œ ๋Œ€์กฐ ๋ฐ ๊ฒ€์‚ฌํ•˜์—ฌ ๋‹จ์ˆœ ํ™•์žฅ์ž ๋ณ€ํ™˜์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ
  • Magic Number๋ฅผ ํ†ตํ•ด ํŒŒ์ผ ๋‚ด์šฉ ๊ฒ€์ฆํ•˜์—ฌ ํ™•์žฅ์ž๋‚˜ MIME์ด ์ •์ƒ์ด์–ด๋„ ๋‚ด๋ถ€์˜ ์•…์„ฑ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Œ
  • ์‹คํ–‰ ๊ถŒํ•œ ์—†๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์„ ์ง์ ‘ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•จ
  • ์—…๋กœ๋“œ ํŒŒ์ผ๋ช…์„ ๋žœ๋คํ•œ ์ด๋ฆ„์œผ๋กœ ์žฌ์„ค์ •ํ•˜์—ฌ ๊ฒฝ๋กœ ์˜ˆ์ธก์„ ๋ง‰์Œ

File Download Vulnerability

์ •์˜

ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ . ์ด์šฉ์ž๊ฐ€ ๋‹ค์šด๋กœ๋“œํ•  ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ž„์˜๋กœ ์ •ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๋ฐœ์ƒ.

๋™์ž‘ ํ๋ฆ„

image.png

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŒŒ์ผ์„ ์š”์ฒญ
  2. ์„œ๋ฒ„๋Š” BASE_DIR์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ํŒŒ์ผ์„ ์ฐพ์•„ ์ „์†ก
  3. ๊ณต๊ฒฉ์ž๊ฐ€ ../../../ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ๋ฏผ๊ฐํ•œ ํŒŒ์ผ์„ ์š”์ฒญ
  4. ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฏผ๊ฐํ•œ ํŒŒ์ผ์˜ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ

๋Œ€์‘ ๋ฐฉ๋ฒ•

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒŒ์ผ๋ช…์„ ๋ฐ”๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ID ๊ธฐ๋ฐ˜์œผ๋กœ ๋งคํ•‘ ํ›„ ๋‹ค์šด
  • ์ƒ๋Œ€ ๊ฒฝ๋กœ/์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ •๊ทœํ™” ๋ฐ ํ•„ํ„ฐ๋ง์„ ํ†ตํ•ด ๊ธฐ์ค€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ง‰์Œ
  • ๋‹ค์šด๋กœ๋“œ ๋Œ€์ƒ ํŒŒ์ผ์„ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋กœ ์ œํ•œํ•˜์—ฌ ์ž„์˜์˜ ํŒŒ์ผ ์ ‘๊ทผ์„ ๋ง‰์Œ
  • ๋‹ค์šด๋กœ๋“œ ์‹œ ์„ธ์…˜, ํ† ํฐ์„ ํ†ตํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ํ™•์ธ
  • Content-Disposition์„ ์„ค์ •ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŒŒ์ผ์„ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ Œ๋”๋งํ•˜์ง€ ์•Š๊ณ  ๋ฌด์กฐ๊ฑด ๋‹ค์šด๋กœ๋“œํ•˜๋„๋ก ๊ฐ•์ œ
    • ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„์—์„œ ํŠน์ • ํŒŒ์ผ์„ ๊ทธ๋ƒฅ ๋ณด๋‚ด๋ฒ„๋ฆฌ๋ฉด ์›นํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๋žœ๋”๋ง์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•…์„ฑ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

Categories:

Updated:

Leave a comment